package com.stylefeng.guns.common.persistence.dao;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import com.stylefeng.guns.common.persistence.model.TOrder;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author xiejie123
 * @since 2018-01-20
 */
public interface TOrderMapper extends BaseMapper<TOrder> {

    /**
     * 待审核
     *
     * @return
     * @date 2017年2月12日 下午9:14:34
     */
    List<Map<String, Object>> selectZtAuditeds(Pagination page, @Param("dot_id") String dotId, @Param("name") String name,
                                               @Param("audit_status") String audit_status,@Param("receipt_status") String receipt_status);


    List<Map<String, Object>> selectTransfer(Pagination page, @Param("dotId") String dotId, @Param("name") String name, @Param("receipt_status") String receipt_status,
                                             @Param("receipt") String receipt, @Param("status") String status,@Param("province_code") String province_code,@Param("city_code") String city_code,@Param("area_code") String area_code);

    /**
     * 待出库
     *
     * @return
     * @date 2017年2月12日 下午9:14:34
     */
    List<Map<String, Object>> selectZtNoOut(Pagination page, @Param("dotId") String dotId, @Param("name") String name,@Param("is_out") String is_out, @Param("receipt_status") String receipt_status,
                                            @Param("receipt") String receipt, @Param("status") String status,@Param("mode") String mode);

    /**
     * 审核通过系统根据订单内容生成费用
     * @param maps
     * @return
     */
    int addOrderFee(List<Map> maps);

    /**
     * 获取可使用的费用类型
     * @param deptid
     * @return
     */
    List<Map<String,Object>> getFee( @Param("deptid") String deptid);

    /**
     * 获取已产生的费用
     * @param order_id
     * @return
     */
    List<Map<String,Object>> getOrderFee( @Param("order_id") String order_id);

    /**
     * 新增费用操作日志#
     * @param log_no
     * @param user_id
     * @return
     */
    int addOrderFeeLogs( @Param("log_no") String log_no,@Param("user_id") String user_id,@Param("order_id") String order_id);

    int addOrderFeeLog( @Param("log_no") String log_no,@Param("user_id") String user_id,@Param("id") String id);

    int addUseFeeLogs( @Param("log_no") String log_no,@Param("user_id") String user_id,@Param("batch_no") String batch_no,@Param("use_object") String use_object);


    int delUseFee(@Param("batch_no") String batch_no,@Param("use_object") String use_object);
    /**
     *删除费用
     * @return
     */
    int delOrderFee(@Param("order_id")String order_id);

    List<Map<String,Object>> getTransferOrders(@Param("ids")List<Integer> ids);

    List<Map<String,Object>> selectDriverList(@Param("dept_id") String dept_id);

    Map<String,Object> selectPush(@Param("dept_id") String dept_id);

    List<Map<String,Object>> selectReport(Pagination page,Map param);

    List<Map<String,Object>> selectReportAvg(Map param);

    List<Map<String,Object>> selectSuperOrder(Pagination page,Map param);

    Map<String,Object> indexNum(Map param);

    List<Map<String,Object>> selectOrders(@Param("query") String query,@Param("dot_id") String dot_id);

    Map<String,Object> selectMinOrderStatus(@Param("order_id") String order_id);

    Map<String,Object> selectOrderReceiptStatus(@Param("order_id") String order_id);

    List<Map<String,Object>> selectDisOutList(Pagination page,@Param("ids")List<Integer> ids);

    List<Map<String,Object>> selectZZOutList(Pagination page,@Param("ids")List<Integer> ids);

    /**
     * 回单列表查询
     * @param page
     * @param m
     * @return
     */
    List<Map<String,Object>> selectOrderList(Page<Map<String, Object>> page, Map m);

    void addOrderFeeLogByIdAndType(@Param("log_no")String log_no, @Param("user_id")String user_id, @Param("id")Integer id, @Param("use_object")String use_object);

    void delOrderFeeIdAndType(@Param("id")Integer id, @Param("use_object")String use_object);

    List<Map<String,Object>> selectSelfLiftInStoreHouse(Pagination page, @Param("dotId") String dotId, @Param("name") String name,@Param("is_out") String is_out, @Param("receipt_status") String receipt_status,
                                                        @Param("receipt") String receipt, @Param("status") String status,@Param("mode") String mode);

    List<Map<String,Object>> selectSelfLiftDataList(Page<Map<String, Object>> page,@Param("ids") List<Integer> ids);


    int batchOrderAuditStatus(@Param("flow_status") String flow_status,
                                 @Param("ids")List<Integer> ids);


}
